package integration;

public interface Integrator {
	/*
	 * Interface for integrator classes.
	 * 
	 * Intended use:
	 * 
	 * 1. findSlope() to find initial slope.  This is separated from the rest of
	 * the integration for cases where you want to do something with the slope at
	 * the endpoint of the previous time-step, e.g., drawing velocity vectors.
	 * 
	 * 2. finalizeSlope() to calculate the slope the system will take to the "true"
	 * endpoint of the integration step.  This is where the meat of the integration
	 * work is done.  Afterwards, the system's slope matrix points it directly at
	 * the endpoint of the step.
	 * 
	 * 3. takeFinalStep() to advance the system to the end of the integration step.
	 */
	public void findSlope();
	public void takeStep(float dt);
	public void finalizeSlope(float dt);
	public void takeFinalStep(float dt);
	public void adjustSpace();
}
